<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>

        //1.字面量创建
        // const arr = [1, 2, 3, 4]
        // //2.通过new的方式创建数组
        // const arr2 = new Array(1, 2, 3, 4)

        // console.log(arr);
        // console.log(arr2);

        //1.forEach 方法
        // forEach 遍历数组的时候能不能改变原数组
        // const arr = [1, 2, 3, 4]
        // const arr = [
        //     {
        //         age: 10
        //     },
        //     {
        //         age: 11
        //     },
        //     {
        //         age: 12
        //     },
        //     {
        //         age: 13
        //     }]

        // //array = arr

        // arr.forEach(function (item, index, array) {
        //     // item += 1
        //     // array[index] += 1

        //     item.age += 10
        //     console.log(item);

        //     if (index === 2) {
        //         throw new Error('heihei')
        //     }
        // })

        // console.log(arr);

        //filter 筛选方法
        //不写return返回什么？ // []

        // 空数组调用filter返回什么 // []

        // const arr = [1, 2, 3, 4]
        // const arr = []

        // const newArr = arr.filter(item => item > 2)
        // console.log(newArr);

        // arr.filter(item => {
        //     console.log(1);
        // })

        //map 迭代关系

        //不写return 返回值是什么？ //数组长度跟原数组一样的数组项都是undefined的新数组
        // const arr = [1, 2, 3, 4]

        // const newArr = arr.map(item => item += 1)

        // console.log(newArr);
        // console.log(arr);



        //reduce 累加器
        //如果不写初始值，那么会自动跳过第一次循环,并且prev会等于数组的第一项
        //下一次prev的值等于这次的回调函数return的结果
        //最后一次遍历结束，会将最后一次的return结果作为整个reduce函数的返回值
        const arr = [1, 2, 3, 4]

        // const res = arr.reduce(function (prev, item) {
        //     // console.log(prev);
        //     // console.log(item);
        //     return prev + item
        // }, 0)

        // console.log(res);

        const res = arr.reduce((prev, item) => item + prev, 0)

        console.log(res);

    </script>
</body>

</html>